import tool from '../tool'
import util from './index'
import RequestFilter from './request'
var in_array = require('in_array');

export default {
    getFv(_this, model, id, fname, clb) {
        let url = tool.getApi(null, 'Get', 'getHardCode');
        let param = { model, id, fname };
        this.getDataCom(_this, url, param, (rs) => {
            clb(rs)
        })
    },

    getDataCom(_this, url, param, callback, errClb, attr, options = {}) {


        let res = _this.$http.post(url, param, options)
        let resFilter = RequestFilter(res, _this);

        return new Promise((resolve, reject) => {


            resFilter.then((rs) => {
                // if (attr) _this[attr] = rs.data;
                resolve();
                if (rs.data) {
                    // if (process.env.NODE_ENV != 'production') {
                    if (rs.data.env && rs.data.env != 'prod') {


                        let fordebug = rs.data.fordebug;
                        if (fordebug) {
                            tool.cl('fordebug:', fordebug);
                        }

                    }
                }


                if (typeof callback == 'function') {
                    if (rs.data && rs.data.status) {

                        callback(rs.data.data, rs.data.msg)
                    } else {

                        if (util.isFunction(errClb)) {
                            let _data = rs.data.data;
                            let errMsg = '';
                            if (_data)
                                errMsg = _data.debug ? `${_data.errmsg}(${_data.debug})` : _data.errmsg;
                            let msg = _data && (_data.errmsg || _data.debug) ? errMsg : rs.data.msg;
                            errClb(_data, msg);

                        }
                    }

                } else {

                }
            });

        });

    },
    SR(_this, url, vo, msg, clb = null, option = {}, errClb = null) { //simple requrest
        util.getDataCom(_this, url, vo, (rs, back_msg) => {
            this.SRMsg(_this, back_msg || msg, option);

            if (util.isFunction(clb)) {
                clb(rs);
            }
        }, (data, msg) => {
            if (errClb) {
                errClb(data, msg);
                if (option.show_err) {
                    this._show_err_msg(_this, data, msg, option);
                }
            } else {
                this._show_err_msg(_this, data, msg, option);
            }
        });

    },
    _show_err_msg(_this, data, msg, option) {
        let errMsg = data.debug ? `${data.errmsg}(${data.debug})` : data.errmsg;
        msg = data && (data.errmsg || data.debug) ? errMsg : msg;

        if (util.isObject(option))
            option.err_lvl = data.err_lvl;
        this.SRMsg(_this, msg, option, 1);
    },
    SRMsg(_this, msg, option, isError = false) {
        if (msg === false || msg === null)
            return;
        let type = 'success';
        if (isError) {
            msg = msg || '操作失败！';
            type = option.err_lvl ? option.err_lvl : 'error';
        } else {
            msg = msg || '操作成功！';
        }

        if (option.showMypop || util.store.get(_this, 'in_modal')) {
            util.showMypop(_this, type, msg, option);
        } else
            util.showMsg(_this, type, msg);

    }
}